package com.xmlit.project.engine.struct;

import java.io.Serializable;
import java.util.List;
//import java.util.regex.Pattern;

import com.xmlit.project.engine.struct.impl.CalcContext;
import com.xmlit.project.engine.struct.impl.StructImpl;

public interface Struct extends Serializable{
	
	String getName();
	Struct   setName(String name);
	
	int    getMinOccurrences();
	Struct    setMinOccurrences(int occ);
	
	int    getMaxOccurrences();
	Struct    setMaxOccurrences(int occ);
	
	StructImpl   addChild(Struct child);
	List<Struct> getChildren();
	
	String getRegularExpressionPure();

	
	String getRegularExpression();
	Struct setRegularExpression(String regex);
	
	int getRegularExpressionIndex();
	Struct setRegularExpressionIndex(int regexIndex);
	
	int getRegularExpressionIndexWithoutOccur();
	Struct setRegularExpressionIndexWithoutOccur(int regexIndex);


	String getPrefix();
	Struct setPrefix(String pref);
	
	String getSuffix();
	Struct setSuffix(String suff);
	
	String calcRegex();
	String calcRegex(CalcContext context, String delimiter);
	
	String getParentDelimiter();
	
/*	void setPattern(Pattern pattern);
	Pattern getPattern();
	
	void setPatternPure(Pattern pattern);
	Pattern getPatternPure();*/
	
	Struct getChild(String name);

	

}
